using Digitalmes.Application.Mes.Processes.StepStandards;

namespace Digitalmes.Application.Mes.Processes.StepTasks;

/// <summary>
/// 工步 DTO 对象。
/// </summary>
public sealed class ProcStepTaskDto : Dto
{
    /// <summary>
    /// 所属的工艺步骤 ID（工序级别）。
    /// </summary>
    public long StepId { get; set; }

    /// <summary>
    /// 工步代码
    /// </summary>
    [NotNull]
    public string? TaskCode { get; set; }

    /// <summary>
    /// 工步名称
    /// </summary>
    [NotNull]
    public string? TaskName { get; set; }

    /// <summary>
    /// 工步顺序号（从 1 开始递增）
    /// </summary>
    /// <remarks>
    /// 场景：在工序中某工步作业时，PLC 会给定顺序号，上位系统按顺序号做参数匹配以及数据处理。
    /// </remarks>
    public int Seq { get; set; }

    /// <summary>
    /// 工步操作说明
    /// </summary>
    public string? WorkInstruction { get; set; }

    /// <summary>
    /// 工步标准作业时间（单位：秒）
    /// </summary>
    public int StandardTime { get; set; }

    /// <summary>
    /// 是否检查工艺标准。
    /// </summary>
    /// <remarks>不受工艺步骤设置值影响</remarks>
    public bool IsCheckStandard { get; set; }

    /// <summary>
    /// 包含的工艺标准集合。
    /// </summary>
    [NotNull]
    public List<ProcStepStandardDto>? Standards { get; set; }

    public string? CreatedBy { get; set; }

    public DateTime CreatedTime { get; set; }

    public string? UpdatedBy { get; set; }

    public DateTime? UpdatedTime { get; set; }
}
